#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h> 

int main(void) {
    pid_t id = fork();
    if(id == 0){
        printf("i am child process\n");
        sleep(5);
        exit(0);
    } 
    if(id > 0){
        int status;
        wait(&status);
        if(WIFEXITED(status)){
            printf("正常退出，退出码为：%d\n", WEXITSTATUS(status));
        }
        else if(WIFSIGNALED(status)){
            printf("异常终止，信号：%d\n", WTERMSIG(status));
        }
        if(WCOREDUMP(status)){
            printf("已生成core文件\n");
        }
    }
    return 0;
}
   // fork();
   // fork() && fork()||fork();
   // fork();
   // printf("this is a process!\n");
   // pid_t id = fork();
   // if(id == 0) {
   //     int cnt = 10;
   //     while(cnt) {
   //         printf("我是子进程，pid = %d, ppid = %d\n", getpid(), getppid());
   //         sleep(1);
   //         cnt--;
   //     }
   //     exit(0);
   // }
   // if(id > 0) {
   //     int cnt = 1;
   //     while(cnt) {
   //         printf("我是父进程，pid = %d, ppid = %d\n", getpid(), getppid());
   //         sleep(1);
   //         cnt--;
   //     }
   //     int status;
   //     pid_t p = wait(&status);
   //     if(p > 0) {
   //         printf("子进程正常退出，返回值为:%d\n", WEXITSTATUS(status));
   //     }
   //     else {
   //         printf("子进程异常\n");
   //     }
   //     sleep(5);
   // }
